/* 
 * cms，一个基于J2EE架构内容管理系统
 * Copyright © GrayRabbit Co., Ltd. All rights reserved.
 * Department:运营department
 * 更多信息请访问：
 * http://code.google.com/p/gray-rabbit-cms/
 */
package org.grayrabbit.cms.service.topic;

import java.util.List;

import org.grayrabbit.cms.entity.Content;
import org.grayrabbit.cms.entity.Topic;
import org.grayrabbit.cms.vo.topic.TopicBean;

import org.grayrabbit.dao.util.Page;
import org.grayrabbit.service.GenericService;

/**
 * <b>OperLog</b>的service接口

 * @version 1.0,创建时间: 2011-05-16 15:59:25 
 */
public interface TopicService extends GenericService {
	/**
	 * 根据主键查询实体
	 * @param topicId
	 * @return
	 */
	Topic getTopic(String topicId);
	/**
	 * 批量删除
	 * @param key
	 */
	void delete(String[] key);
	/**
	 * 删除实体
	 * @param topic
	 */
	void delete(Topic topic);
	/**
	 * 保存实体
	 * @param topic
	 */
	void save(Topic topic);
	/**
	 * 根据bean组装统计查询条件(名称参数)
	 * @param topic
	 * @return
	 */
	Page<Topic> getPage(TopicBean topicBean);
	/**
	 * 填充分页组件的查询：(名称参数)
	 * @param page
	 * @param topicBean
	 */
	void list(Page<Topic> page, TopicBean topicBean);
	/**
	 * 根据站点ID查询专题
	 * @return
	 */
	List<Topic>findBySiteId(String siteId);
	
	/**
	 * 批量启用专题
	 * @param keys
	 */
	void enable(String[] keys);
	/**
	 * 批量禁用专题
	 * @param keys
	 */
	void disable(String[] keys);
	/**
	 * 批量审核专题
	 * @param keys
	 */
	void audit(String[] keys);
	/**
	 * 批量审核专题
	 * @param keys
	 */
	void noAudit(String[] keys);
	
	/**
	 * 检查同一站点下专题名称唯一性
	 * @param role
	 * @return
	 */
	Boolean checkNameUnique(String topicName,String tname,String siteId);
	/*
	 * 专题简称唯一验证
	 */
	Boolean checkSimplenameunique(String simName,String siteId,String oldSimpleName );
	
	public List<Topic> ftlFindTopics(String[] siteIds,String[] topicIds,long[] limit);
	/**
	 * 根据站点获取专题
	 * @param list
	 * @param currentTopicListIndex
	 * @param max
	 * @return
	 */
	List<String> findTopicIdsBySiteId(List<String> list,
			int currentTopicListIndex, int max);
	/**
	 * 获取专题下文章数
	 * @param list
	 * @return
	 */
	int countContentByTopics(List<String> list);
	/**
	 * 获取专题下增量文章数
	 * @param list
	 * @return
	 */
	int countMoreContentByTopics(List<String> list);
	/**
	 * 获取专题下文章
	 * @param topicId
	 * @return
	 */
	List<Content> findByTopId(String topicId);
}